今天要來介紹一下 Set
set
儲存的是 沒有順序性 且 不重複 的資料(會自動刪除重複的元素)
建立 set
:
用 set()
或 {}
來建立,但是 {}
裡面要放東西,不然會被判定為 dict
s = {1, 2, 3}
print(type(s))
x = {}
print(type(x))
s = {1, 2, 3}
print(s)
用 set()
建立
settt = set(('a', 'b', 'c')) #注意這裡是兩層括號
print(settt)
print(type(settt))
set
不能有重複元素
s = {'Red', 'Blue', 'Yellow', 'Red'} # 只能有一個 'Red'
print(s)
想知道 set
內有多少元素:用 len()
來看
s = {'Red', 'Blue', 'Yellow'}
print(len(s))
增加 set
內的元素
set.add()
:新增元素
s = {'Red', 'Blue', 'Yellow'}
s.add('Orange')
print(s)
set.update()
:可以把任何可迭代的物件也加到原本的 set
當中
s = {'Red', 'Blue', 'Yellow'}
abcd = {'hello', 'python'}
s.update(abcd) #合併另一個 set
print(s)
s = {'Red', 'Blue', 'Yellow'}
abcd = ['hello', 'python', 123]
s.update(abcd)
print(s)
set.union
:把兩個 set
合併到另一個新的 set
,跟 update 的差別是建立一個新的 set
或是改變原本的 set
set1 = {1, 2, 3}
set2 = {'a', 'b', 'c'}
set3 = set1.union(set2)
print(set3)
set1.update(set2)
print(set1)
這兩個「update()
, union()
」的括號內可以放任何可迭代的物件(list
, dic
, tuple
, set
)但是前面一定要是 set
才可以用這兩個函式。
減少 set
內的元素
set.remove()
:刪除元素,若括號內的元素原本的 set
裡沒有會錯誤
s = {'Red', 'Blue', 'Yellow'}
s.remove('Red')
print(s)
set.discard()
:也是刪除元素,但是括號內的元素 set
沒有也不會錯誤
s = {'Red', 'Blue', 'Yellow'}
s.discard('Red')
print(s)
s = {'Red', 'Blue', 'Yellow'}
s.discard('Orange') #set 內沒有 'Orange' 也不會錯誤
print(s)
set.clear
:清空 set
s = {'Red', 'Blue', 'Yellow'}
s.clear()
print(s)
print(type(s))
del
:刪除整個 set
s = {'Red', 'Blue', 'Yellow'}
del s
set.pop()
:與 list
不同,由於 set
沒有順序性,所以是隨機移除一個 set
內的元素
s = {'Red', 'Blue', 'Yellow'}
s.pop()
print(s)
用 loop
把跑一遍 set
s = {'Red', 'Blue', 'Yellow'}
for x in s:
print(x)
檢查特定元素是否在 set
裡
s = {'Red', 'Blue', 'Yellow'}
print('Red' in s)
Set Methods
set.intersection_update()
:檢查 set
之間交集(共有)的元素,並把引導的 set
改為只剩交集的元素
x = {'Red', 'Blue', 'Yellow'}
y = {'hello', 2, 'Red'} #共有的只有 'Red'
x.intersection_update(y)
print(x)
set.intersection()
:檢查 set
之間交集(共有)的元素,並建立一個新的 set
x = {'Red', 'Blue', 'Yellow'}
y = {'hello', 2, 'Red'}
x.intersection_update(y)
z = x.intersection(y)
print('set x =', x)
print('set z =', z)
set.symmetric_difference_update()
set.symmetric_difference()
:取出 set
之間交集的元素「之外」的元素
x = {'Red', 'Blue', 'Yellow'}
y = {'hello', 2, 'Red'}
x.symmetric_difference_update(y) #得到的值會蓋過原本的 x
print('set x =', x)
x = {'Red', 'Blue', 'Yellow'}
y = {'hello', 2, 'Red'}
z = x.symmetric_difference(y) #得到的值給 z
print('set z =', z)
set.difference()
set.difference_update()
:找出該 set
與另一個 set
「不一樣」的元素
x = {'Red', 'Blue', 'Yellow'}
y = {'hello', 2, 'Red'}
z = x.difference(y) #不會改變 x
x.difference_update(y) #會改變 x 所以放後面
print('set z =', z)
print('set x =', x)
待續...